package linc.fun.openai.service;

import com.mybatisflex.core.service.IService;
import linc.fun.openai.domain.entity.sys.SysEmailVerifyCodeDO;
import linc.fun.openai.enums.SysEmailBizTypeEnum;

/**
 * 邮箱验证码核销记录业务接口
 *
 * @author CoDeleven
 */
public interface SysEmailVerifyCodeService extends IService<SysEmailVerifyCodeDO> {

    /**
     * 创建校验码
     *
     * @param emailBizTypeEnum 业务用途枚举
     * @param identity         标识
     * @return 校验码
     */
    SysEmailVerifyCodeDO createVerifyCode(SysEmailBizTypeEnum emailBizTypeEnum, String identity);

    /**
     * 根据验证码查找一个有效（未过期，未验证）的验证记录
     *
     * @param verifyCode 验证码
     * @return 验证记录
     */
    SysEmailVerifyCodeDO findAvailableByVerifyCode(String verifyCode);

    /**
     * 完成验证记录
     *
     * @param availableVerifyCode 待完成的验证记录
     */
    void verifySuccess(SysEmailVerifyCodeDO availableVerifyCode);
}
